const express = require("express");
const Router = express.Router();
const jwt = require("jsonwebtoken");
const sqlHelper = require("../utils/sqlHelper");


// 注册 post请求 
Router.post("/register", (req, res) => {
  /* 
  1 获取用户 post请求过来 数据 req.body  (username , password)
  2 要先搜索一下 数据库 有没有已经使用了 名称 
  3 第一次查询结束后
    1 对查询结果 做 判断
      1 如果报错 直接返回 响应 注册失败
      2 如果 没有报错
  4 第一次查询后 没有报错
    1 还得去判断 查询结果 数组 有没有长度 
    2 如果长度 等于 0 ，表示以前没有注册过 现在可以注册-添加数据
    3 如果长度 不等于 0  表示 以前有注册过了，现在 响应 注册失败即可
 
   */

  const { username, password } = req.body;

  // 查询数据库中是否已经存在相同的username 
  sqlHelper(`select * from user where username = '${username}'`, (err1, results1) => {
    if (err1) {
      console.log(err1);
      res.send({ code: 500, data: null, msg: "注册失败" });
    } else {
      // res.send({ code: 200, data: results1, msg: "查询成功" });
      // 查询成功 还判断有没有数据被查出来
      if (results1.length === 0) {
        // 数据库中没有当前要注册的用户  所以允许注册  直接去操作数据库完成 注册-添加
        // res.send({ code: 200, data: null, msg: "允许注册" });

        sqlHelper(`insert into user(username,password) values('${username}','${password}')`, (err2, results2) => {
          if (err2) {
            res.send({ code: 500, data: null, msg: "注册失败" });
          } else {
            res.send({ code: 200, data: null, msg: "注册成功" });
          }
        })

      } else {
        // 找到了相同的名字  已经存在该用户了  不允许注册 
        res.send({ code: 500, data: null, msg: "该用户已经存在" });
      }
    }
  });

})

// 登录 post请求
Router.post("/login", (req, res) => {
  /* 
  1 接收 用户的post请求参数 (username,password)
  2 拿用户名和密码去数据库中查询 
  3 如果查到了 表示 登录成功
  4 如果查不到 表示 帐号或者密码错误
  
   */

  const { username, password } = req.body;
  sqlHelper(`select * from user where username ='${username}' and password = '${password}' `, (err, results) => {
    if (err) {
      console.log(err);
      res.send({ code: 500, data: null, msg: "帐号或者密码错误" });
    } else {
      if (results.length === 0) {
        //  找到不到这个账号密码 登录失败
        res.send({ code: 500, data: null, msg: "帐号或者密码错误" });
      } else {
        // 登录成功

        // 生成token 
        const token = jwt.sign({ username }, 'node66', { expiresIn: '1h' });
        res.send({ code: 200, data: null, msg: "登录成功", token });
      }
    }
  })
})
module.exports = Router;